import { defineStore } from 'pinia'

// 用户状态管理
export const useUserStore = defineStore('user', {
  state: () => ({
    // 用户信息
    userInfo: {
      id: '',
      name: '',
      avatar: '',
      token: ''
    },
    // 资源库列表
    resourceList: [],
    // 风格偏好
    stylePreferences: {
      teachingStyle: '', // 授课风格偏好
      mediaStyle: '',   // 多媒体风格偏好
      duration: 45      // 默认授课时长
    }
  }),
  
  getters: {
    // 获取用户Token
    getToken: (state) => state.userInfo.token,
    // 获取用户名
    getUserName: (state) => state.userInfo.name,
    // 获取用户资源列表
    getResourceList: (state) => state.resourceList,
    // 获取用户风格偏好
    getStylePreferences: (state) => state.stylePreferences
  },
  
  actions: {
    // 设置用户信息
    setUserInfo(userInfo) {
      this.userInfo = { ...this.userInfo, ...userInfo }
      // 保存到本地存储
      localStorage.setItem('userInfo', JSON.stringify(this.userInfo))
    },
    
    // 设置用户Token
    setToken(token) {
      this.userInfo.token = token
      localStorage.setItem('token', token)
    },
    
    // 添加资源到资源库
    addResource(resource) {
      this.resourceList.push(resource)
    },
    
    // 更新资源库列表
    updateResourceList(list) {
      this.resourceList = list
    },
    
    // 设置风格偏好
    setStylePreference(key, value) {
      if (key in this.stylePreferences) {
        this.stylePreferences[key] = value
        // 保存到本地存储
        localStorage.setItem('stylePreferences', JSON.stringify(this.stylePreferences))
      }
    },
    
    // 初始化用户数据（从本地存储加载）
    initUserData() {
      // 加载用户信息
      const userInfo = localStorage.getItem('userInfo')
      if (userInfo) {
        this.userInfo = JSON.parse(userInfo)
      }
      
      // 加载Token
      const token = localStorage.getItem('token')
      if (token) {
        this.userInfo.token = token
      }
      
      // 加载风格偏好
      const stylePreferences = localStorage.getItem('stylePreferences')
      if (stylePreferences) {
        this.stylePreferences = JSON.parse(stylePreferences)
      }
    },
    
    // 退出登录
    logout() {
      // 清空用户信息
      this.userInfo = {
        id: '',
        name: '',
        avatar: '',
        token: ''
      }
      // 清除本地存储
      localStorage.removeItem('userInfo')
      localStorage.removeItem('token')
    }
  }
})